SIG/M volume 8		PASCAL and Communications related programs
		
			PASCAL related programs
 
8.01	BOOT.ASM	 1K	Sample BOOT for PASCAL
8.02	BOOTER.DOC	 3K	PASCAL documentation for CP/M
8.03	TEST.ASM	 7K	Scan and load 8080/Z80 Pascal
				interpreter
8.04	PAS2CPM.ASM	 8K	Format conversion 
8.05	PASCAL.ASM	 7K	Initialization of PASCAL system
8.06	PASCAL.COM	17K
8.07	PASCAL.DOC	 1K
8.08	PASTOCPM	12K	Format conversion
8.09	PBOOT.ASM	 1K	Utilities to initialize PASCAL system
8.10	PGEN.ASM	 4K
8.11	PGEN.COM	 1K
8.12	PINIT.ASM	 6K
8.13	READ.ME		 2K	PASCAL startup documentation

			Communications related programs

8.14	CHAT13.ASM	 5K	2-way communications with remote caller
8.15	DCHBYE57.ASM	24K	Upgrade of remote console DCHBYE55
				on SIG/M 7.01
8.16	MODEM5A.ASM	46K	Auto-dial and auto re-dial capability
				on DC Hayes and PMMI modem boards
8.17	PLNK1018.ASM	21K	Upgrade of PLNK925 on SIG/M 7.6 and
				CP/M UG 19.4 with more modem types
8.18	NEWBAUD.ASM	 4K	Switch BAUD rate on a remote PMMI
				to readjust modem speed
8.19	RBBS22.ASC	20K	Update of RBBS in SIG/M volume 7
8.20	RBBS22.DOC	 6K
8.21	RBSUTL22.ASC	 9K
8.22	MBOOT3.ASM	 8K	Compacted version of MODEM for RECV
				only usage
8.23	XMODEM38.ASM	24K	Update of SIG/M 7.8 - remote CP/M to
				CP/M transfer
AFTER THE DOCUMENTATION WAS PRINTED WE DISCOVERED THAT A FARLY LARGE NUMBER
OF PEOPLE HAVE BIOS'S LARGER THAN THE STANDARD 512 BYTES.  IF YOU DO...

MSIZE = SIZE OF MEMORY IN KBYTES AS USUAL.
BIOSSZ = SIZE OF BIOS IN BYTES.  BIOSSZ MUST BE A MULTIPLE OF 256.

    THE ONLY THING AFFECTED IS IS PUTTING A BOOTER ONTO A PASCAL DISK.
THE STEPS TO BE FOLLOWED ARE:

1.  COMPUTE LOADP := MSIZE*1024-BIOSSZ-1024;
    BIOSORG := MSIZE*1024-BIOSSZ

2.  WRITE THE PROGRAM PBOOT AND ASSEMBLE IT.
    PBOOT MUST LOAD SECTORS 2 THRU  9 + BIOSSZ/128 
    IT MUST LOAD THEM STARTING AT LOCATION
    LOADP, AND THEN JUMP TO LOADP.

3.  CHANGE MSIZE AND BIOSSZ IN  PINIT AND ASSEMBLE.

4.  CHANGE BIOSSZ IN PGEN AND REASSEMBLE, THEN LOAD.
    (THEREBY CREATING PGEN.COM)

5.  STITCH TOGETHER THE PIECES
    A) TO FIND THE OFFSET PINIT.HEX SHOULD BE READ IN WITH, USE
       LOADP RATHER THAN BA00.
    B) TO FIND THE OFFSET BIOS.HEX SHOULD BE READ IN WITH, USE
       BIOSORG RATHER THAN BE00.
    C) SAVE  14 + BIOSSZ/256 RATHER THAN 16 WHEN SAVING
       PGEN.COM
Forming a Pascal System Booter
------------------------------



	To create an UCSD Pascal system booter you must have the following:

		1)  A short boot loader that will read in track 0 sectors 2 - 13

		2)  A copy of PINIT.ASM

		3)  A hex version of your current BIOS

		4)  A copy of PGEN.COM


	The short boot loader of 1) can be generated from your current system
boot loader if either a source or listing of it is available.  This trans-
formation process is simply the reduction of a two track bootstrap into a
single track one.  Two programs BOOT.ASM and PBOOT.ASM are provided as inspir-
ation for this proceedure.


	NOTE:  PBOOT loads its sectors to location (MSIZE-48)*1024+0BA00H
	       and then jumps to that same point.


	If you have no inkling of how your current system boot either loads or
works, you will have to prevail on your system supplier for that information.


	PINIT.ASM is the source for the code that boots in and starts
SYSTEM.MICRO, the P-Machine interpreter.  A quick edit of PINIT.ASM is needed
to modify the MSIZE equate to match the memory size (in kilobytes) of the
current system BIOS.  Once this has been done each of the modules PBOOT, PINIT
and BIOS must be assembled to produce the .HEX files which will be overlayed
into PGEN's data area as follows:

	NOTE:  In the following we assume a 48k system



A>DDT PGEN.COM			;Read PGEN code into memory

DDT VERS 1.3			;We will be overlaying PBOOT,
NEXT  PC			;  PINIT, and BIOS into PGEN's
0300 0100			;  data area, and finally saving
				;  the memory image.
-IPBOOT.HEX			;Set 'PBOOT.HEX' as the input file
-H900 0				;PBOOT starts at location 0,  we want
0900 0900			;  to compute a bias to read it to loc 900
-R900				;Using this bias we read PBOOT to PGEN's
NEXT  PC			;  data area
0980 0000
-IPINIT.HEX			;We will now do the same proceedure with
-H980 BA00			;PINIT.  This object code will go to
C380 4F80			;  location 980, notice PINIT starts at
-R4F80				;  BA00 (HEX) in a 48k system.
NEXT  PC
0A7D BA00			;The value below NEXT will vary with the release
-IBIOS.HEX			;Last we read BIOS to location D80
-HD80 BE00
C380 4F80			;This should be the same bias value as last time
-R4F80
NEXT  PC
0F76 0000			;The value below NEXT is dependant on BIOS
-^C				;We now leave ddt to save our work

A>SAVE 16 PGEN48.COM		;Our boot writer will be called PGEN48
A>PGEN48			;The booter may now be put out to Pascal

PGEN VERSION 1.0		;  system disks by executing PGEN48

GET BOOTER?(Y/N)N		;  as shown

PUT BOOTER?(Y/N)Y
WRITING BOOTER TO DRIVE A, TYPE RETURN
AGAIN?(Y/N)N

REBOOTING CP/M, TYPE RETURN


Bringing UCSD Pascal up for the first time
------------------------------------------



	To bring up Pascal first assure yourself that you have a standard
BIOS area (i.e.  all i/o vectors are in order) and that the warm boot
vector is in place.  Next if you have a single drive system, make sure that
your BIOS ignors all requests to drive B.  Two drive systems will require
diskettes in both drives until you modify your disk drivers to return a
not ready condition (i.e. a 1 in the A register) when the drive has no diskettee.
Now bring up your standard system, and run the program PASCAL.COM supplied
on the 8080/Z80 support diskette.  This program will prompt you with a request
for a Pascal system diskette in dirve A.  At that time insert the UCSD
distribution Pascal diskette and if you have a second dirve place
any initialized diskette in that drive as well.  Type return and enter the
world of pascal.



	This is a preliminary documentation file for the 2.0
version of RBBS (Remote Bulletin Board System).  More com-
plete documentation, to include a complete overview as well
as more detailed implementation notes, is planned.

============================================================

RBBS PROGRAM

    The RBBS software has four new features with the 2.0
implementation:
	
	1) Personal messages:  A caller can leave a personal
	   message to anyone else by entering the password
	   "*".  This causes the message to be invisible in
	   summary commands, and retrieve and kill, for any-
	   one but the sender and receiver.  An attempt to
	   Kill a personal message by anyone other than the
	   sender or receiver (and, of course, the SYSOP),
	   will result in a "message not found".

	2) Re-entry:  when a user has exited to the operating
	   system, RBBS will retain his name in a file called
	   "LASTCALR".	If RBBS is subsequently re-entered
	   with RBBS P (the "P" was arbitrarily chosen), the
	   system will retrieve his name from the "LASTCALR"
	   file, and skip the sign-on printing.  Note that if
	   you are using a loader program to load RBBS from
	   another user area (under cp/m 2.x), you can make
	   this function automatic, by having the loader fill
	   in the "P" immediately before it transfers control
	   to RBBS.  In this case, your BYE program should
	   store a non-"P" character at location 5DH (default
	   cp/m file control block).

	3) Killed messages will now have additional information
	   in the record used to store the message number:
			0:<#>:<user name>
	   where 0 indicates a killed message to RBBS, <#> is
	   the original message number, and <user name> is the
	   name of the user who killed the message.  This should
	   be helpful in restoring messages improperly killed
	   by inept/malicious individuals.  Note that after
	   using an editor to restore the message (be careful
	   here - the editor must not choke on blank-filled
	   lines), the "BUILDSUM" function of the RBBSUTIL pro-
	   gram can be used to generate a new summary file.

	4) Message passwords, previously only stored in the sum-
	   mary file, are now duplicated in the message file.  
	   This was necessary to allow the BUILDSUM function of
	   RBBSUTIL to generate a complete summary file.

==============================================================

RBBS UTILITY PROGRAM (RBBSUTIL)

	The utility program has the following changes with the
2.0 upgrade:

	1) When transferring a disk file to the message file,
	   the files must have already been purged.  This in-
	   sures that the files will have been backed up prior
	   to any messages being added.  Note also that the
	   file "COUNTERS" will also be backed up by purge.

	2) The purge function writes deleted messages to an ar-
	   chive file called <DATE>.ARC, where the date is sup-
	   plied by the operator when purge is invoked.  The
	   archive file is written sequentially, and lines are
	   unpacked before writing to conserve space.

	3) The purge function allows renumbering of the messages
	   starting at any number specified when purge is in-
	   voked.  You may choose not to use this option if you
	   maintain archives, because duplicate message numbers
	   can be left in the archive files.

	4) A new function, "B", will build a summary file from
	   the message file.  This can be useful after editing
	   the message file.  It also allows only the message
	   file to be saved when doing back-up operations, as
	   the summary file can now be derived from the message
	   file.  Note that releases of RBBS previous to 2.0 did
	   not save the passwords in the message file, there-
	   fore, a summary file, rebuilt from such a message
	   file will not have password protection.

					Ron Fowler
					Nov 18, 1980
					Westland, Mich.


	  PREVIOUS DOCUMENTATION OF THE RBBS SYSTEM
	  =========================================


		    RBBS.DOC as of 10/23/80

   RBBS is short for "Remote Bulletin Board System".
   RBBS.ASC is a file that was created with MBASIC 5.2.  Do
not try to edit it with a CP/M text editor because some  of
the multiple line statements may have special end-of-line
sequences which may mess up a video-oriented editor, making it
impossible to see some of the lines.  Use MBASIC 5.2 to edit the
file.  This is public-domain software, feel free to use it on
your own system.  The  best  way to run this program is to com-
pile it with the MBASIC compiler, making a COM file out of it.
It will run much faster  that way.  This is what Bruce Ratoff
did, and it works great on his system. 
   The POKES to address 0000h change the C3 to a CD during
execution  of this program.  Bruce Ratoff tests for this in
his DCHBYE55  remote  console program. This testing is also done
in the PMMIBY63 remote console program. In the input from modem
port routine a test is made to see if address 0000h is a CD, if
so it causes the input routine to ignore control-C, changing it
to to a null character instead.  This makes it impossible for
the user to control-C  out of RBBS.   When the program is done,
if you are exiting to CP/M for file transfers, it changes the CD
back to a C3 and then jumps to 0000h (warm boot).
   RBBSPURG.ASC is a program for purging dead messages out of
the RBBS message files.  This should be done periodically to
compactthe message files, since  the "Kill" function simply
deletes  the pointer to the message, not the message itself.

-------
 NOTE: The above RBBSPURG.ASC has been superceded by
	 RBBSUTIL.ASC	  rgf
-------
